package negocios;

import java.io.Serializable;

public class Persona implements Serializable, Comparable<Persona> {
	
	private String nombre;
	private String email;
	private Integer edad;
	private Integer cantidadAmigos;
	private static final long serialVersionUID = 1L;

	public Persona(String nombre, String email, Integer edad)
	{
		this.nombre = nombre;
		this.email = email;
		this.edad = edad;
		this.cantidadAmigos = 0;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public int getEdad() {
		return edad;
	}

	public void setEdad(Integer edad) {
		this.edad = edad;
	}

	public Integer getCantidadAmigos() {
		return cantidadAmigos;
	}

	public void setCantidadAmigos(Integer cantidadAmigos) {
		this.cantidadAmigos = cantidadAmigos;
	}

	@Override
	public String toString() {
		return nombre + " " + email + " " + String.valueOf(edad) +" "+ String.valueOf(cantidadAmigos);
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((cantidadAmigos == null) ? 0 : cantidadAmigos.hashCode());
		result = prime * result + ((edad == null) ? 0 : edad.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Persona other = (Persona) obj;
		if (cantidadAmigos == null) {
			if (other.cantidadAmigos != null)
				return false;
		} else if (!cantidadAmigos.equals(other.cantidadAmigos))
			return false;
		if (edad == null) {
			if (other.edad != null)
				return false;
		} else if (!edad.equals(other.edad))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (nombre == null) {
			if (other.nombre != null)
				return false;
		} else if (!nombre.equals(other.nombre))
			return false;
		return true;
	}

	
	@Override
	public int compareTo(Persona o) {
		int ret;
		if(this.nombre.compareTo(o.nombre)== -1 
				|| this.email.compareTo(o.email) == -1 
				|| this.edad < o.edad 
				|| this.cantidadAmigos < o.cantidadAmigos){
			ret = -1;
		}else if(this.nombre.compareTo(o.nombre)== 1 
				|| this.email.compareTo(o.email) == 1
				|| this.edad > o.edad 
				|| this.cantidadAmigos > o.cantidadAmigos){
			ret = 1; 
		}else{
			ret = 0;
		}
		return ret;
	}
	
}
